package com.xaicode.auth.utils;

import cn.hutool.core.util.StrUtil;
import com.xaicode.auth.exception.MustNotNullOrEmptyException;
import org.springframework.lang.Nullable;
import org.springframework.util.CollectionUtils;

import java.util.Collection;

/**
 * 全局校验工具，抛出异常交由全局异常处理类解析处理
 * 
 * @date 2024/12/19
 */
public class GlobalValidator {

    public static void notNull(Object o) {
        notNull(o, "");
    }

    public static void notNull(Object o, String msg) {
        if (null == o) {
            if (StrUtil.isBlank(msg)) {
                msg = "can not be null";
            }
            throw new MustNotNullOrEmptyException(msg);
        }
    }

    public static void notEmpty(String o) {
        notEmpty(o, "");
    }

    public static void notEmpty(String o, String msg) {
        // 此处不区分 blank 和 empty
        if (StrUtil.isBlank(o)) {
            if (StrUtil.isBlank(msg)) {
                msg = "can not be empty";
            }
            throw new MustNotNullOrEmptyException(msg);
        }
    }

    public static void notEmpty(@Nullable Collection<?> c, String msg) {
        if (CollectionUtils.isEmpty(c)) {
            throw new MustNotNullOrEmptyException(msg);
        }
    }

}
